package code.starivan.leetcode;

/**
 * Created by Ivan on 2015/10/18.
 */

//You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.

/*
Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.

        For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.
*/

public class N292_NimGame {
    public boolean canWinNim(int n) {
       /* if(n<=0){
            return false;
        }else if(n<=3){
            return true;
        }

        boolean b1=true,b2=true,b3=true,b=false;
        for(int i=4;i<=n;++i){
            b=(b3&&b2&&b1)?false:true;
            b1=b2;
            b2=b3;
            b3=b;
        }

        return b;*/

        if(n<=0){
            return false;
        }

        return n%4!=0;
    }
}
